import axios from 'axios'
import store from '@/store'
import {
    Toast
} from 'vant'
// 根据环境不同引入不同api地址
import {
    baseApi
} from '@/config'
// create an axios instance
const service = axios.create({
    // withCredentials: true, // send cookies when cross-domain requests
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    },
    // baseURL: baseApi,
    timeout: 5000 // request timeout
})

service.defaults.transformRequest = [
    function(data, headers) {
        if (headers['Content-Type'] === 'application/x-www-form-urlencoded; charset=UTF-8') {
            let ret = ''
            for (let it in data) {
                ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
            }
            return ret
        } else {
            return JSON.stringify(data)
        }
    }
]

// request拦截器 request interceptor
service.interceptors.request.use(
        config => {
            // 不传递默认开启loading
            if (!config.hideloading) {
                // loading
                Toast.loading({
                    forbidClick: true
                })
            }
            if (store.getters.token) {
                config.headers['X-Token'] = ''
            }
            return config
        },
        error => {
            // do something with request error
            console.log(error) // for debug
            return Promise.reject(error)
        }
    )
    // respone拦截器
service.interceptors.response.use(
    response => {
        Toast.clear()
        const res = response.data
        if (res.status && res.status !== 200) {
            // 登录超时,重新登录
            // if (res.status === 401) {
            //   store.dispatch('FedLogOut').then(() => {
            //     location.reload()
            //   })
            // }
            return Promise.reject(res || 'error')
        } else {
            return Promise.resolve(res)
        }
    },
    error => {
        Toast.clear()
        console.log('err' + error) // for debug
        return Promise.reject(error)
    }
)

export default service